<?php

require_once 'Basic.php';

mustBe(isset($_GET["idCliente"]) && (isLoggedAsClient($_GET["idCliente"]) || isLoggedAsEmployee()));

class ClientInfo {
  
  private $idCliente;
  private $report;
  private $dbFail;
  private $inexistent;
  private $name;
  
  public function __construct($idCliente) {
    $this->idCliente = $idCliente;
    $this->report = new Report();
    $this->dbFail = false;
    $this->inexistent = false;
    $this->name = "[???]";
    $this->buildHtml();
  }
  
  private function buildHtml() {
    $db = new DBUtils();
    
    try {
      $db->connect();
      $db->runQuery("select * from DadosCliente where idCliente = ?", array($this->idCliente));
      
      $item = $db->getItem();
      if($item === null) {
        $this->inexistent = true;
        $db->close();
        return;
      }
      
      $reportData = new ReportItem("-");
      $reportData->addLine("Email", $item->email);
      
      switch($item->tipoCliente) {
        case "fisica":
          $this->name = htmlentities($item->nomeCliente);
          $reportData->addLine("Nome", $item->nomeCliente);
          $reportData->addLine("CPF", $item->CPF);
          $reportData->addLine("Sexo", $item->sexo);
          $reportData->addLine("Idade", $item->idade);
          $reportData->addLine("Poderia conduzir", $item->tipoPF === "condutor" ? "sim" : "não");
          $reportData->addLine("CNH", $item->CNH);
          if($item->vencimentoCNH !== null) {
            $item->vencimentoCNH = $item->vencimentoCNH->format("d/m/Y");
          }
          $reportData->addLine("Data de vencimento da CNH", $item->vencimentoCNH);
          $reportData->addLine("Categoria da CNH", $item->categoriaCNH);
          break;
        case "juridica":
          $this->name = htmlentities($item->razaoSocial);
          $reportData->addLine("Razão Social", $item->razaoSocial);
          $reportData->addLine("CNPJ", $item->CNPJ);
          break;
      }
      
      $reportData->addLine("Logradouro", $item->logradouro);
      $reportData->addLine("Número", $item->numero);
      $reportData->addLine("Complemento", $item->complemento);
      $reportData->addLine("Bairro", $item->bairro);
      $reportData->addLine("CEP", $item->CEP);
      $reportData->addLine("Outras informações", $item->outrasInformacoes);
      $reportData->addLine("Cidade", $item->nomeCidade);
      $reportData->addLine("UF", $item->nomeUF);

      if($item->dataValidadeCartao !== null) {
      	$item->dataValidadeCartao = $item->dataValidadeCartao->format("d/m/Y");
      }
      
      $reportData->addLine("Data de validação do cartão de crédito", $item->dataValidadeCartao);
      $reportData->addLine("Bandeira do cartão de crédito", $item->bandeiraCartao);
      $reportData->addLine("Número do cartão de crédito", $item->numeroCartao);
      $reportData->addLine("Código de segurança do cartão de crédito", $item->codigoSegurancaCartao);

      $reportData->addLink("Editar", StdForm::decoreHref("ClientEdit.php?idCliente=" . $item->idCliente, StdForm::ACTION_VALUE_PRINT));
      $reportData->addLink("Remover", "RemoveClient.php?idCliente=" . $this->idCliente);
      $reportData->addLink("Editar dados de condutor", StdForm::decoreHref("EditDriver.php?idCliente=" . $item->idCliente, 
        																																	 StdForm::ACTION_VALUE_PRINT));
      $this->report->addItem($reportData);
      $db->close();
    }
    catch(DBError $e) {
      $this->dbFail = true;
    }
  }
  
  public function getHtml() {
    if($this->dbFail) {
      return "<p>Falha no banco de dados. O erro foi reportado.</p>";
    }
    else if($this->inexistent) {
      return "<p>O usu&aacute;rio que foi requisitado n&atilde;o existe.</p>";
    }
    else {
      return $this->report->getHtml();
    }
  }
  
  public function getClientName() {
    return $this->name;
  }
  
}

$info = new ClientInfo($_GET["idCliente"]);
$page = new Page("Dados do cliente - " . $info->getClientName());
$page->addContent($info->getHtml());

echo $page->getHtml();